The PrintOMatic Lite MX Xtra

Version 1.7

The PrintOMatic Lite Xtra provides essential printing functionality for Macromedia Director and Authorware. Its main purpose is to add a global print handler to Lingo that will print just about anything, and a printStage handler that easily prints the contents of the Stage.

Registering PrintOMatic Lite MX

You are free to use the unregistered version of PrintOMatic Lite MX for the purpose of evaluating the software and its suitability for use in your project. However, every page that the unregistered version prints will contain a "printed by an unregistered copy" message on the bottom. Distributing an unregistered copy of the Xtra in a finished production is a violation of the product license.

Click here for information about purchasing PrintOMatic Lite MX.

Quick Links

System Requirements

What's New in PrintOMatic Lite MX?

Purchasing PrintOMatic Lite

PrintOMatic "Heavy": The Full Version

Using PrintOMatic Lite

PrintOMatic Lite Message List

Technical Notes

Release Notes


System Requirements

  • Mac OS 9, Mac OS X, Windows 95, 98, Me, NT, 2000, or XP
  • Macintosh or Windows-compatible printer (local or networked) with current print drivers
  • Authoring: Macromedia Director 8, 8.5 or MX, or Authorware 5, 6, or 7
  • Web Playback: Shockwave 8 or 8.5

We officially support Director 8, 8.5, and MX on Mac 0S X, Mac OS 9, and 32-bit Windows platforms. PrintOMatic MX will very likely work with versions of Director all the way back to 5.0 on Mac and Windows, however, we are dropping any "official" support for these older versions of Director, because doing acceptance testing on all these older versions is just too difficult. Tester feedback shows that the Xtra also works fine with Authorware, but we don't have the Authorware skills (or a copy of the software) to do this effectively.


What's New in PrintOMatic Lite MX?

In addition to our primary goal of Mac OS X and Director MX compatibility, we have been able to add a few often-requested features to this release: tab stop support, page breaks, and automatic image tiling (Windows).

Tab stops are now available in your text at 24pt intervals. This is the same standard tab-stop length as Director's text field editing window. Therefore, if you format your tabs in the text field editor (Ctrl-8 or Command-8), the printout should match. NOTE: this doesn't apply to Rich Text cast members, which still print as bitmaps.

Page breaks are available to split up your text flow. A new command, pageBreak, will stop the text flow on the current page. All text appended after calling pageBreak will start on the next page.

Automatic image tiling addresses problems that some black and white printers have with printing large true color images on Windows (the "blank output on Windows" problem). All true color images are now printed as 128x128 pixel "tiles", which are a more digestible image size for problematic printers. The appearance of these images in printouts should be identical to an un-tiled printout.

Also, a minor change to the text engine adds sensitivity to the text alignment of cast members (left/right/centered). You can mix text alignments in the same text frame without affecting the alignment of previously placed text.


Purchasing PrintOMatic Lite

PrintOMatic Lite MX is published by Electronic Ink. A cross-platform copy of PrintOMatic Lite MX, with a royalty-free, unlimited use license to use PrintOMatic Lite in your multimedia productions costs $100.00 US. You can obtain a serial number for PrintOMatic Lite MX on-line from our web site: www.printomatic.com

The PrintOMatic Lite demonstration movie also prints out an order form for PrintOMatic Lite MX, as well as other Electronic Ink Xtras. To order your copy of PrintOMatic Lite MX, simply fill out this form and FAX or mail it with payment information to:

Electronic Ink
PO Box 3733
Crested Butte, CO 81224
Tel: (970) 349-1747
Fax: (970) 349-9245

Email: sales@printomatic.com


PrintOMatic “Heavy”: The Full Version

PrintOMatic "Heavy": The Full Version

The PrintOMatic MX Xtra is the full featured version of PrintOMatic Lite MX. It is the premier printing tool for Macromedia Director and Authorware. PrintOMatic adds a full set of page-layout, text and graphics printing features to Director 5, Director 6, and Authorware 4 projects on Macintosh and Windows.

PrintOMatic MX includes commands for accurately specifying the position of any text or graphic element on the page. PrintOMatic documents can contain graphic files from disk, styled text, graphic primitives, cast member bitmaps, and snapshots of the Director stage.

Product Features

  • Generates multi-page layouts with full control over the placement of text and graphic elements on the page.
  • Print styled text: any combination of available fonts, sizes, or styles
  • Print PICT, BMP or EPS files from disk, any portion of the Director stage, or Director cast members.
  • Print object-oriented graphic primitives: lines, boxes, ovals and rounded rectangles.
  • "Master Page" can contain any combination of text or graphic elements
  • Automatic page numbering
  • Customizable and hideable Print Progress dialog
  • Paper-saving Print Preview feature
  • Supports all Macintosh and Windows compatible printers
  • Supports color and landscape-mode printing
  • Fully compatible with MacOS and Windows 95, 98, Me, NT, and 2000

    • Where to Find PrintOMatic MX

    Unregistered but fully functioning "demonstration" copies of PrintOMatic are distributed as shareware. The latest version can always be downloaded from our Web site at http://www.printomatic.com/

    All documentation, sample code and ordering information for PrintOMatic is included in the downloadable distribution packages at this site.

    Purchasing PrintOMatic MX

    The PrintOMatic MX Xtra is published by Electronic Ink. A cross-platform copy of PrintOMatic MX, with a royalty-free, unlimited use license to use PrintOMatic MX in your multimedia productions costs $350.00 US. You can obtain a serial number for PrintOMatic MX on-line from our web site: www.printomatic.com

    The PrintOMatic demonstration movie also prints out an order form for PrintOMatic MX, as well as other Electronic Ink Xtras. To order your copy of PrintOMatic MX, simply fill out this form and FAX or mail it with payment information to:

    Electronic Ink
    PO Box 3733
    Crested Butte, CO 81224
    Tel: (970) 349-1747
    Fax: (970) 349-9245

    Email: sales@printomatic.com


Using PrintOMatic Lite

The PrintOMatic Lite Xtra can be used in two ways. The first and simplest way to use PrintOMatic Lite is by calling the global print command, passing the Director object(s) you would like to print as parameters:

print member "illustration" of castLib 1
print "Some example text for printing"
print sprite 1, sprite 5
print castLib "documentation"

If all you have to do is print something out quickly and easily, you can stop reading now; that's all there is to it.

Using an Instance of the PrintOMatic Lite Xtra

The second way of using PrintOMatic Lite, which is more powerful and customizable than simply using the global print command, is to create an instance of the Xtra using the new command:

set doc = new(xtra "PrintOMatic_Lite")
if not objectP(doc) then exit

An instance of the PrintOMatic Lite Xtra is called a "document object ". Be sure to check the validity of the document object using the objectP() function before continuing. Once you have created a document object, you can change its attributes, such as the document's name, margins and landscape orientation:

setDocumentName doc, "My Document"
setMargins doc, Rect(36,36,36,36)
setLandscapeMode doc, TRUE

Then, you can add items such as sprites and cast members to the document object using the append command:

append doc, member "title" of castLib 1
append doc, sprite 1

Text field cast members will be printed with all their fonts and styles intact. Rich text cast members' bitmap images will be printed. However, text strings have no inherent style data associated with them. You can use setTextFont, setTextSize and setTextStyle to set the attributes of text strings that you append.

setTextFont doc, "Helvetica"
setTextSize doc, 10
setTextStyle doc, "normal"
append doc, copyrightInfo

When you have appended all the elements you want to print to the document object, show the user the job setup dialog, and print the document if doJobSetup returns TRUE. If you don't want the user to see the job setup dialog, omit the call to doJobSetup.

if doJobSetup(doc) then print doc

Finally, dispose of the document object by setting its value equal to zero. This will release all the memory taken up by the PrintOMatic Lite document.

set doc = 0


PrintOMatic Lite Message List

This is the full list of commands supported by the PrintOMatic Lite Xtra.

-- CREATE/DESTROY/RESET A DOCUMENT
new object
forget object
reset object
--
-- DOCUMENT PRINTING SETUP
doPageSetup object
doJobSetup object
setLandscapeMode object, boolean
setMargins object, rect
setDocumentName object, string
--
-- TEXT ATTRIBUTES
setTextFont object, string
setTextSize object, int
setTextStyle object, string
--
-- APPEND TO DOCUMENT
append object, *
pageBreak object
--
-- PRINTING
* printPreview *
* print *
--
-- MISCELLANEOUS
+ getVersion object
+ register object, string


Creating, Destroying and Resetting Documents

The following commands are used to create and reset PrintOMatic Lite documents:

new creates a new document

forget never call this directly

reset resets a document to defaults

To destroy a document, never call the forget method of an Xtra explicitly. Instead, use the following syntax to explicitly get rid of a document object when you are done using it:

set doc = 0


new

Creating Document Objects with new

Syntax: set doc = new(xtra "PrintOMatic") (full version)

or set doc = new(xtra "PrintOMatic_Lite") (lite version)

The new command is used to create a new instance of the PrintOMatic or PrintOMatic Lite MX Xtra. The newly created instance is called a document object, since it represents a printable "document": a collection of items that are printed together in a single print job by the Xtra.

Once your document has been created and stored in a Lingo variable, its settings can be modified, items can be appended to the document, and it can be printed or displayed in a print preview window.

Important Note:

new will return an error code instead of a document object if there is no currently selected printer, or a printing error occurs. Always check the result of new with the objectP() function to make sure you have a valid Xtra instance before continuing!

Example:

The following code example creates a new document, sets the page orientation to landscape mode, appends an image with a caption to the document, and prints the document:

set doc = new(xtra "PrintOMatic") -- or new (xtra "PrintOMatic_Lite")
if not objectP(doc) then exit
append doc, member "picture", TRUE
append doc, RETURN & "Image printed by my sample code.", TRUE
if doJobSetup (doc) = TRUE then print doc
set doc = 0


forget

You should never call the forget command directly for an instance of a Lingo Xtra. Director automatically calls forget when an instance of an Xtra needs to be disposed; calling forget yourself can lead to memory leaks or crashing.

Use the following syntax to explicitly get rid of a document object when you are done using it:

set doc = 0

Where doc is the document object you want to dispose of. Explicitly disposing of documents is optional, since Director will automatically get rid of the object when it's no longer referenced anyway.


reset

Syntax: reset document

The reset command is used to reset an instance of a document object. All the contents of the document and any existing pages are deleted. The page settings, such as margins and page orientation, as well as the progress dialog settings, are maintained; they are NOT reset to default values.


Document and Job Setup

The following commands are used to set up document parameters and to display printin dialogs:

doPageSetup Presents the Page Setup dialog

doJobSetup Presents the Print Job Setup dialog

setLandscapeMode Sets landscape or portrait orientation

setMargins Sets the margins of the

setDocumentName Sets the name of the document


doPageSetup

Syntax: doPageSetup(document)

Returns: TRUE if the user clicks "OK" in the page setup dialog

FALSE if the user clicks "Cancel" in the page setup dialog

The doPageSetup function displays the Page Setup dialog for a document. This function must be called on an empty document, before any elements are added to it. doPageSetup returns TRUE if the user clicks the "OK" button in the dialog box, or FALSE if the user clicks "Cancel". You can call the getLandscapeMode routine before and after doPageSetup to determine if the user changed the page orientation in the Page Setup dialog box.


doJobSetup

Syntax: doJobSetup(document)

Returns: TRUE if the user clicks "Print" in the job setup dialog

FALSE if the user clicks "Cancel" in the job setup dialog

The doJobSetup function displays the job setup dialog for a document object. This function should be called right before printing. If doJobSetup returns TRUE, the user clicked the "Print" button, and printing should proceed. If doJobSetup returns FALSE, the user clicked "Cancel", and you should not print the document. This function cannot be called on an empty document.

Example:

This is the recommended way of calling doJobSetup right before printing a PrintOMatic document:

if doJobSetup (doc) = TRUE then print doc


setLandscapeMode

Syntax: setLandscapeMode document, trueOrFalse

This command switches the page orientation of a document object between landscape and portrait orientation. Since this method changes the whole coordinate system of the document, your document must be empty when you call setLandscapeMode. You can call reset on your document beforehand just to make sure.

Windows and Mac OS X

In Windows and Mac OS X, this method works in a very straightforward manner: call it, and the landscape mode changes.

Mac OS 9 / Classic Mac OS

Unfortunately, it's an entirely different story on Mac OS 9 / Classic Mac OS. The only safe way to change the page orientation on the Mac is by showing the Page Setup dialog and letting the user manually select landscape mode. While showing a Page Setup dialog may be fine for normal software applications such as Word, it's often unacceptable in the context of a multimedia production.

To get around this, PrintOMatic for Mac OS 9 relies on a "printer database" to store default landscape and portrait page setups for the most common Macintosh printers. This printer database consists of a set of 'PHDL' resources located in the same file as the PrintOMatic Xtra. This database is used by the setLandscapeMode method in the Macintosh version of PrintOMatic.

If the currently selected printer is not found in the printer database, the user is asked to MANUALLY create default Page Setups for landscape and portrait modes, and those settings are saved and added to the database. This is done through a series of prompt dialogs presented automatically by PrintOMatic when you call setLandscapeMode for an unknown printer.

These user-configured "custom entries" to the printer database are stored in a file called "PrintOMatic Preferences" in the Preferences folder on the user's hard disk. Subsequent calls to setLandscapeMode on the same computer, with the same printer selected, won't present any annoying dialogs.

What the presence of this "printer database" means is that when you change the landscape mode on the Macintosh, all the other Page Setup settings such as scaling, font substitution, etc., will also revert to those found in the printer database. This is important if the user has changed any of these settings (during a call to doPageSetup) before setLandscapeMode is called.


getLandscapeMode

Syntax: getLandscapeMode(document)

Returns: TRUE if the document has a landscape orientation, otherwise FALSE

This command retrieves the page orientation of a document object. getLandscapeMode returns TRUE if the document has a landscape (horizontal) orientation.


setMargins

Syntax: setMargins document, marginRect

This command sets the margins of a document object. The marginRect parameter is in the form of a Lingo Rect. Values are specified in the format Rect(left, top, right, bottom). The measurements are in points (72 points to the inch). Since this method changes the whole coordinate system of the document, your document must be empty when you call setMargins. Call reset on your document beforehand just to make sure.

Example:

The following example creates a new document and sets the margins to two inches (144 points) on the left, and one inch (72 points) on all other sides.

set doc = new(xtra "PrintOMatic")
if not objectP(doc) then exit
setMargins doc, Rect(144,72,72,72)


setDocumentName

Syntax: setDocumentName document, name

This command sets the name of a PrintOMatic document, which is displayed in the print progress dialog as the document prints. If background printing is enabled, this document name is also displayed by PrintMonitor (Mac) or Print Manager (Windows) as your document prints in the background.


Setting Text Attributes

The following routines are used to set the default text and graphic attributes of a document. These attributes determine the color, font, etc. of subsequently added document elements:

setTextFont Sets the default text font for non-styled text data

setTextSize Sets the default text size for non-styled text data

setTextStyle Sets the default text style for non-styled text data


setTextFont

Syntax: setTextFont document, fontName

Returns: TRUE if the requested font was available

FALSE if the requested font could not be found

This command sets the text font that will be applied to non-styled text data (such as strings) that are subsequently appended to the document object. If the requested font is not available, the default font (Geneva on the Macintosh, Arial on Windows) is used.

Note that the current font set using setTextFont will be overridden by the fonts, sizes and styles within styled text field cast members that you subsequently append to your document. The default font used for non-styled text data after appending a styled text field will be the last font contained within the text field.


setTextSize

Syntax: setTextSize document, fontSize

This command sets the text size that will be applied to non-styled text data (such as strings) that are subsequently appended to the document object.


setTextStyle

Syntax: setTextStyle document, styleString

This command sets the text style that will be applied to non-styled text data (such as strings) that are subsequently appended to the document object. The values for textStyle correspond exactly to the Director "textStyle" property. Possible values for text styles are:

normal
plain
bold
italic
underline

On the Macintosh, the following additional styles are available:

outline
condense
extend
shadow

All values except normal or plain are added together in a call to setTextStyle, so you can combine a number of styles together in a single call.

Example:

The following example creates a PrintOMatic document, sets the default font to bold italicized 10 point Helvetica, and prints a short text string:

set doc = new(xtra "PrintOMatic")
if not objectP(doc) then exit
setTextStyle doc, "bold, italic"
setTextFont doc, "Helvetica"
setTextSize doc, 10
append doc, "Some sample text to print out."
if doJobSetup(doc) then print doc
set doc = 0


Appending to a Document

The following commands are used to append text and graphics to a PrintOMatic Lite document.

append appends contents to the current frame

pageBreak inserts a page break in the text flow


append

Syntax: append document, member whichCastmember [, ... , autoAppend ]

append document, member whichCastmember of castLib whichLib [, ... , autoAppend ]

append document, castLib whichCast [, ... , autoAppend ]

append document, sprite whichSprite [, ... , autoAppend ]

append document, string [, ... , autoAppend ]

append document, list [, ... , autoAppend ]

The append command appends one or more items to the current "frame" of a document object. If no current frame exists in your document, the PrintOMatic Xtra will attempt to create a "default" frame for you, which is the width and height of the page, minus the current margins.

The autoAppend parameter, which is always the last parameter in a call to append, controls whether or not new pages will be created "on the fly" if the PrintOMatic Xtra runs out of space on the last "frame" in your document. If this parameter is set to TRUE, new pages will be created with the same "frame" layout as the last page of your document. PrintOMatic will create as many new pages as are necessary to flow all the specified elements into your document . If this parameter is not specified when you call append, its value defaults to TRUE.

AutoAppending is not allowed when flowing items into a frame on the master page of a document.

type of object          what gets appended
_________________________________________________________________

text field cast member  the text of the field, using the
                        specified fonts and styles

rich text cast member   the bitmap image of the cast member,
                        including anti-aliasing

bitmap cast member      the cast member graphic

PICT cast member        the cast member graphic

cast library            all printable cast members in the
                        library, in cast sequence

sprite                  the cast member of the sprite

text string             the text string, in the default font
                       (Geneva 10pt on Macintosh,
                        Arial 10pt on Windows)

list                    the elements in the list

Example:

The following example creates a PrintOMatic document, sets the document name, creates the first page, adds a frame to it, and appends a number of items to the document, and prints it:

set doc = new(xtra "PrintOMatic")
if not objectP(doc) then exit
setDocumentName doc, "My Example Document"
newPage doc
newFrame doc, Rect(0,0,getPageWidth(doc),getPageHeight(doc)
append doc, sprite 1, TRUE
append doc, [member "image", member "caption", sprite 5], TRUE
append doc, castLib "printout", TRUE
if doJobSetup(doc) then print doc
set doc = 0


pageBreak

Syntax: pageBreak document

Stops the text flow on the current page. All text appended after calling pageBreak will start on the next page.


Printing and Print Preview

The following commands are used to print or display a print preview of a PrintOMatic Lite document.

printPreview displays an on-screen print preview of the requested item(s)

print prints the requested item(s) to the currently selected printer

printStage prints the contents of the stage with one line of Lingo code


printPreview

Syntax: printPreview(document)

printPreview(any [, ... ])

Returns: TRUE if the user previews all the pages in the document

FALSE if the user cancels the print preview

This function displays an on-screen facsimile of the output that the print command will generate when it is passed the same set of parameters. printPreview will display a preview of a document as well as sets of strings, sprites, cast members, lists, etc. See the print command for a complete list of the elements that can be previewed.

Typing any key or clicking in the preview window advances to the next page; typing command-period (Escape on Windows) cancels the preview without displaying all the pages. When the document can't be displayed on the main screen at 100% size (which is most of the time, unless you have a big monitor), the page is scaled to fit.


print

Syntax: print member whichCastmember [,... ]

print member whichCastmember of castLib whichLib [, ... ]

print castLib whichCast [, ... ]

print sprite whichSprite [, ... ]

print string [, ... ]

print list [, ... ]

print document

The print command is an extension to Lingo provided by the PrintOMatic Xtra. This command is used to print one or more items to the currently selected printer. The following Director objects are printable:

type of object           what gets printed
_________________________________________________________________

text field cast member   the text of the field, using the
                         specified fonts and styles

rich text cast member    the bitmap image of the cast member,
                         including anti-aliasing

bitmap cast member       the cast member graphic

PICT cast member         the cast member graphic

cast library             all printable cast members in the
                         library, in cast sequence

sprite                   the cast member of the sprite

text string              the text string, in the default font
                        (Geneva 10pt on Macintosh,
                         Arial 10pt on Windows)

list                     the elements in the list

document                 the contents of the PrintOMatic document

Examples:

You can print a number of objects together with a single call to the print command:

print "Printed Output" & RETURN , member "image" , member "someText"

One of the most powerful uses of the print command is to assemble all the elements of a document into a single cast library, and print the entire cast library with one line of Lingo:

print castLib "document"


printStage

Syntax:printStage [(grabOffscreen)]

Returns: TRUE, if printing was successful, FALSE if printing was canceled.

This function prints the contents of the Stage (or Authorware presentation window) with one command. This routine uses a “best fit” method to position the stage contents on the printed page. If the stage is wider than it is tall, the paper orientation is automatically switched to landscape mode. If the stage is exceptionally large, it is proportionally scaled to fit on the page within one-inch margins. The output is always centered on the page.

The grabOffscreen parameter affects whether the image on the stage is grabbed from the screen, or Director’s offscreen buffer. The default is to grab from the offscreen buffer, which will not capture “trails”, overlapping movies-in-a-window, the mouse cursor, or other windows. If grabOffscreen is false, the Xtra will take a “screen shot” of the stage, including all “trails”, and any other elements that may overlap the stage.

This command is not available in projectors until you register your copy of PrintOMatic Lite.

Examples:

printStage        -– prints from offscreen buffer

printStage(FALSE) -- prints a screen shot


Miscellaneous Routines

The following commands are odds and ends that didn't fit any other category:

getVersion get information about the version number

register registers your copy of the PrintOMatic Xtra


getVersion

Syntax: getVersion(xtra "PrintOMatic_Lite")

Returns: the version number of the Xtra, in string form

This function returns the version number of the xtra.

Example:

set version = getVersion(xtra "PrintOMatic_Lite")
if version <> "1.5.5" then alert "Incompatible Xtra version."


register

Syntax: register(xtra "PrintOMatic_Lite", serialNumber)

Returns: TRUE if the serial number is valid

The register command will register the PrintOMatic Lite Xtra, once you license PrintOMatic Lite and obtain a valid serial number. This will remove those annoying "unregistered copy" messages from your print progress dialog and printed output.

The registration process only registers your copy of PrintOMatic Lite temporarily. Your serial number is stored in Director's registry and might not be stored for any longer than the current Director session. If you re-install Director, move your movie to another computer, or use PrintOMatic Lite from a Projector, the serial number will likely be unavailable the next time you use PrintOMatic Lite.

Therefore, you should add the registration code below to the startMovie handler of every movie that uses the PrintOMatic Lite Xtra. This will ensure that PrintOMatic Lite can always find its serial number when it needs to.

Example:

The following code registers your copy of the PrintOMatic Lite Xtra for the duration of the current Director session:

register(xtra "PrintOMatic_Lite", "<your serial number>")


PrintOMatic Lite MX Tech Notes

You can always view the most recent Tech Notes about PrintOMatic Lite MX on our web site at www.printomatic.com

Are Serial Numbers Cross-Platform?

Blank Output in Windows

Can't Print an Empty Document Errors

Embedded Fonts and PrintOMatic

Finding a Lost Serial Number

Handler Not Defined Errors

High Resolution Printing

How to Print the Stage

Linked Cast Members Don't Print

Macintosh PHDL Resources

Printing Bitmap Files in .GIF or .JPG Format

Printing PDF Files

Script Error / Xtra Not Found Error

Serial Numbers & Registration

Shockwave and PrintOMatic

Text Fields Print with Incorrect Fonts

Text Members and PrintOMatic

Text/RTF Members Print Too Small

Why Does Preparing to Print Take So Long?


Release Notes

PrintOMatic Lite MX Version 1.7 (Changes since version 1.6.5)

  • Updated the entire text-rendering engine to a single cross-platform code base.
  • Added default 24pt tab-stop support.
  • A minor change to the text engine adds sensitivity to the text alignment of cast members (left/right/centered). You can mix text alignments in the same text frame without affecting the alignment of previously placed text.
  • Added pageBreak command.
  • Added Windows code to defend against FPU flushing problems in some printer drivers, which caused embedded Shockwave movies to crash after printing in projectors.
  • Added image tiling features for true-color image printing, which should reduce the "blank output" problem occurring on black&white laser printers.


Technical Note: Text Members and PrintOMatic

Tech Note: Text Members and PrintOMatic

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

Macromedia Director 5 and later have two types of cast members: text "field" cast members and rich text cast members. PrintOMatic is capable of printing both types of text members, however, this printing is handled in different ways.

While Director 5 and 6 allow you to edit Rich Text cast members as word-processing text, the ultimate format that this information is saved in is a BITMAP. While this has changed in Director 7, PrintOMatic still only assumes that it can retrieve bitmap information from RTF cast members.

In Director 5 and 6, when you protect a Director movie and bundle it into a projector, all the text information is removed from Rich Text cast members, and only the bitmap image of the text remains.

It is this bitmap image that PrintOMatic and PrintOMatic Lite are able to print. The Xtras handle an RTF member as a large bitmap, and therefore, these cast members are subject to bitmap image scaling rules:

  • If the member is wider or taller than the printable area of the page, it will be scaled to fit the page.
  • You can’t "flow" the contents of an RTF member across more than one page. In order to print an RTF member on more than one page, you must break the text up into multiple RTF members, and print them by using the "append" command for each member.

Solutions

The best quality printing with PrintOMatic always comes from using text FIELD members. Consider placing your printable text into these members for best results.

Your other option is to split your RTF into multiple one-page members and print them sequentially, e.g.:

    print member 1, member 2, member 3


Technical Note: Blank Output in Windows

Tech Note: Blank Output in Windows

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

Blank or garbled output from PrintOMatic and PrintOMatic Lite for Windows is almost always a result of two factors: 16-bit color depth, combined with out-of-date or poorly written print drivers, particularly drivers for Hewlett-Packard and Lexmark printers. The problem sometimes occurs with systems set to 32 bit color, in addition to 16 bits. The problem is more prevalent with larger images than small.

If you are having problems printing a LINKED cast member, consult the tech note "Linked Cast Members Don’t Print"

Nearly every problem with printing true color images or screen shots with PrintOMatic can be attributed to out of date or flawed printer drivers, specifically those distributed by HP and Lexmark for their black-and-white printers.

Just because other programs can print doesn’t mean your drivers are OK. Part of the problem is that very few programs actually send 16-bit data to the printer. Photoshop, for example, always sends 24-bit data to the printer, regardless of the source bit depth.

The blank output problem most commonly occurs when using Hewlett Packard or Lexmark print drivers to print to a black & white HP or Lexmark printer. We are discovering that these are the worst print drivers in the industry, with the most poorly implemented color support. HP and Lexmark are virtually the only manufacturers whose drivers have color printing flaws that cause PrintOMatic pages to come out blank.

If you are printing the Stage, you can improve your results by printing the stage in small pieces. Read our tech note Fixing Blank Output in Windows for more information.

Some Background

PrintOMatic is one of a very few programs that actually send data to the printer at the source bit depth, which for many people running Windows 95 and NT, happens to be 16 bits per pixel.

A bit of history. In Windows 3.1 and earlier, the only "legal" bit depths for DIB data (Windows’ internal format for bitmapped images) were 1, 4, 8,and 24. The format was very rigid, and very simple. When Microsoft wrote Windows NT and 95, they expanded the DIB format to include a number of new bit depths (16 bits among them), and a number of extra features for handling true-color images better.

When printer driver developers updated their Windows 3.1 drivers to work in Windows 95 and NT, many of them forgot about the expanded DIB format that these operating systems supported. Some who didn’t forget simply did a poor job of implementing 16-bit support. (Developers of VIDEO drivers were much better about this.) The result was print drivers that didn’t support 16-bit image data, or did so poorly, even though the operating systems now had full 16-bit color support.

Over the past couple of years, most driver developers have finally stepped into line with 16-bit image data support. As a result, getting the latest version of the drivers for your printer will often solve the "blank page" bug when printing true color images with PrintOMatic.

However, many HP print drivers, especially drivers for their black & white printers, still contain color printing flaws as described above.

Another problem lies in the memory management routines of these drivers. Many of these print drivers will print 16-bit images, as long as they are small. When the images get bigger, or the print resolution increases, the drivers fail. This happens regardless of how much memory is available on yoru computer.

Recommended Solutions

  1. Update your print drivers to the latest version from HP’s web site.

  2. Manually change the screen depth to 8 bits (most reliable) or 24 or 32 bits.

  3. Detect the screen depth usingthe colorDepth. If the colorDepth = 16, then alert the user and use an Xtra like The DisplayRes Xtra to switch bit depth on the fly. (A tutorial on the DisplayRes Xtra is beyond the scope of this tech note.)

  4. If you are printing the Stage, try printing the stage in pieces. Try the code in our tech note Fixing Blank Output in Windows


Technical Note: -1 Error Printing on Windows

Tech Note: -1 Error Printing on Windows

Products: PrintOMatic Lite Xtra 1.6.5, PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

When trying to print using PrintOMatic or PrintOMatic Lite for Windows, an error dialog pops up that says: "The printer could not be initialized. Error code=-1"

This the result of using an out-of-date version of PrintOMatic with Director 7 or later.

The solution is to download the latest version of PrintOMatic or PrintOMatic Lite.

For those who are interested, some background about this problem. This error is the result of a conflict between Director 7 and later, and version 4 and later of Microsoft’s MFC class libraries, which renders MFC unable to initialize the printer.

Version 1.5.8 and later of the PrintOMatic and PrintOMatic Lite Xtras for Windows were compiled using the version 2 MFC libraries, which do not have this conflict.


Technical Note: Selecting Paper Sizes on Macintosh

Tech Note: Selecting Paper Sizes on Macintosh

Products: PrintOMatic Lite Xtra 1.6.5, PrintOMatic Xtra 1.6.5
Platforms: Mac OS 8, Mac OS 9

The PrintOMatic and PrintOMatic Lite Xtras use the current printer driver to determine the default paper size for your documents. You can control this setting in a number of ways:

Selecting a Printer Driver

On Macintosh systems, you select your printer driver using the Chooser application (accessible from the Apple menu.) When you open the Chooser, you are presented with icons representing the different printer drivers that you have installed. After you select the desired driver, the Chooser will display all available printers on the right side of the dialog. Next, you click on the name of the printer that you want to use.

On Macintosh systems, selecting a printer and printer driver does NOT give you the option of selecting the default paper size. This setting is controlled explicitly from the standard Page Setup dialog.

Therefore, to allow PrintOMatic Xtra documents to be printed using paper sizes other than the default, you need to use the doPageSetup command. Using doPageSetup If you plan to make use of this PrintOMatic Xtra command, you should call it prior to adding any content to your document. This command will give the user the opportunity to select the paper size they want to use by displaying an OS standard Page Setup dialog.

Once the user has made their selection, you can determine the dimensions of the paper size that they have selected by using the getPaperWidth() and getPaperHeight() functions. In addition, you can adjust the document layout space to the maximum allowed by the current paper size setting by using the setPrintableMargins command.

Using SavePageSetup and LoadPageSetup

If you want to make a specific paper size the default, you can accomplish this on the Macintosh by using the savePageSetup and loadPageSetup commands. The savePageSetup command uses the following syntax: savePageSetup object, string fileName, string fileType, string fileCreator, int resourceID object: this should be the instance of the PrintOMatic Xtra you have created fileName: this should be an explicit path and filename for storing the page setup information fileType: this should be a four character sequence. You can use something of your own design, such as "PAGE" fileCreator: this should be a four character sequence. You can use something of your own design, such as "POMX" resourceID: this should be an integer value from 1 to 255. You can save multiple page setups into the same file, so you can use this id to identify the separate page setups.

Example:

    savePageSetup myDocument, the pathName & "pageSetups",
"PAGE", "POMX", 1

You can treat this command as a function to verify that your attempt to save the page setup information was successful:

    put savePageSetup(myDocument, the pathName & "pageSetups",
"PAGE", "POMX", 1) into saveSuccess
        if saveSuccess then
           -- continue on
    end if

It’s important to note that this command saves the information currently stored in the Page Setup dialog. So, if you want to save non-default settings, you need to first call the doPageSetup command to allow the user to select new settings.

Alternatively, you can do this yourself prior to delivering your project. You can save multiple page setups into the same file (or use separate page setup files) so you can store the settings for several paper sizes in advance.

Once you have created page setup files, you can use them with the loadPageSetup command. The loadPageSetup command uses the following syntax:

    loadPageSetup object, string fileName, int resourceID

object: this should be the instance of the PrintOMatic Xtra you have created

fileName: this should be an explicit path and filename for storing the page setup information

resourceID: this should be an integer value from 1 to 255. You can save multiple page setups into the same file, so you can use this id to identify the separate page setups.


Technical Note: Macintosh PHDL Resources

Tech Note: Macintosh PHDL Resources

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: Mac OS 8, Mac OS 9

What PHDLs Are Used For

Because Apple supplies a non-standard method for handling landscape printing mode, PrintOMatic Xtra uses an internal PHDL resource to provide information which in fact is printer driver specific. As shipped, the PHDL resource covers most known common Macintosh compatible laser printers.

If you attempt to set landscape mode on a printer which is "unknown", PrintOMatic Xtra puts up a special one-time only dialog asking for some information which it then stores in the PHDL resource of a special file named "PrintOMatic Preferences" that PrintOMatic Xtra will use in future sessions. The "PrintOMatic Preferences" file is stored in your System Folder’s "Preferences" folder.

It’s not so much related to *brand* of printer as it is to the printer *driver*. For example, Apple’s LaserWriter driver is used for just about every PostScript printer that’s out there. Printer-specific features are implemented by the Macintosh OS via .PPD files. This is nice, because it allows the same driver (with the same printer database entry) to be used for a lot of printers.

Which PHDL Resources Come with PrintOMatic?

The default PHDL resources are actually named with the driver that generated them, so you can just look at the names with ResEdit or Resourcer. These are the ones that are in there:

  • Express Fax Sender
  • ImageWriter
  • LaserWriter
  • LaserWriter 300
  • CoStar LabelWriter
  • Acrobat PDFWriter
  • LinkSaver 6.1

You don’t actually have to have the printer attached to your machine to generate these entries; you just have to have the driver selected in the Chooser. Then calling setLandscapeMode will prompt you to configure the default Landscape and Portrait page setups, and write the appropriate ’PHDL’ resources to the "PrintOMatic Preferences" file.

How to Install Custom PHDLs

Using the following steps, you can not only add additional PHDL resources to PrintOMatic Xtra but you can change the default paper sizes used by PrintOMatic Xtra! Here’s how to do this:

  1. Install all of the printer drivers you want to create PHDL resources for into your Extensions folder.

  2. Launch Director (with PrintOMatic Xtra installed in your Xtras folder.)

  3. Create an instance of the PrintOMatic Xtra in Director: put new(xtra "PrintOMatic") into doc

  4. Use the Chooser to select every print driver (one at a time) and call setLandscapeMode for each driver: setLandscapeMode doc, TRUE

  5. Following the on-screen prompts, carefully configure the default landscape and portrait page setup. They’ll be saved to the "PrintOMatic Preferences" file in your Preferences folder.

  6. Repeat steps 4 and 5 until you have used every printer driver.

  7. Quit Director.
Now, you need to copy the PHDL resources from the "PrintOMatic Preferences" file that has been created into a new copy of the PrintOMatic Xtra...

  1. Make a backup copy of your PrintOMatic Xtra file. IMPORTANT!!!

  2. Open your backup copy of the PrintOMatic Xtra file with ResEdit or Resourcer.

  3. If you want to change the default paper sizes for existing PHDL resources, delete the existing PHDL resources.

  4. Open your "PrintOMatic Preferences" file with ResEdit or Resourcer.

  5. Copy the desired PHDL resources from the "PrintOMatic Preferences" file into the PHDL section of the PrintOMatic Xtra backup file.

  6. Save the changes to the PrintOMatic Xtra backup file.
You’re done. Now try everything out by using your modified backup copy of the PrintOMatic Xtra and see if you have properly copied the PHDL resources into the Xtra. Once you have tested everything carefully, you can use your modified copy of the PrintOMatic Xtra for your shipping project!


Technical Note: Selecting Paper Sizes on Windows

Tech Note: Selecting Paper Sizes on Windows

Products: PrintOMatic Lite Xtra 1.6.5, PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

The PrintOMatic Xtra uses the current printer driver to determine the default paper size for your documents. You can control this setting in a number of ways:

Selecting a Printer Driver

On Windows systems, you select your printer driver using the Printer Control Panel. When you open this control panel, you will be prompted with the option of selecting a printer driver (the method of this selection varies between versions of the Windows OS.) Once you have selected a printer driver, you can access the Properties for that printer driver. In the Properties dialog, you will find an option for selecting paper size.

Unlike the Macintosh OS, here you can specify the default paper size to be used by PrintOMatic Xtra. On Windows, PrintOMatic Xtra gets all of its page size and orientation information from the printer driver that is currently active. After changing your printer driver settings you need to restart Director or your runtime application so that PrintOMatic Xtra will recognize them.

Using SavePageSetup and LoadPageSetup

There is no equivalent to the savePageSetup and loadPageSetup commands for Windows. This is due to the way that the Windows OS functions.

PHDL Resources

There is no equivalent to the PHDL resources and PrintOMatic Preferences file for Windows.

Summary

In short, the only way to set the paper size to a non-default setting is to either manually change the paper size using the Printer Control Panel options or to display the Page Setup dialog using the doPageSetup command provided by PrintOMatic Xtra.


Technical Note: Serial Numbers & Registration

Tech Note: Serial Numbers & Registration

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5, Table Xtra 1.0
Platforms: all

Purchasing a Serial Number

Being a modern and low overhead company, we don’t actually have product disks, manuals, and boxes to sell. Instead, you can download as many products as you want from our Web site, and buy serial numbers for them from our web site once you’re convinced they fit your needs.

By buying serial numbers instead of boxes with disks in them, you get fully registered software right away, and you avoid paying any sales tax or shipping.

Registering Your Xtra

All of Electronic Ink’s Xtras must be registered using Lingo code. You need to place a call to the Xtra?s "register" routine in a place where it will run as soon as your movie is started. We recommend placing this code in your startMovie handler:

register xtra "[xtra name]", "[serial number]"

When you purchase a serial number for one of our Xtras, you will receive an email with more specific and detailed registration instructions.

The Registration Dialog Box

Some versions of our Xtras had a registration dialog box. This dialog has been removed in recent releases, because this registration system proved unreliable. The ONLY way to properly register an Electronic Ink Xtra is using Lingo.

Common Registration Problems

The most common registration problem is placing your registration Lingo in a place where it does not get executed.

This usually occurs when your on startMovie handler is not located in a movie script cast member. To confirm the type of script member, click the "info" button at the top of the script window that contains your registration code. The Type of the script should be "Movie".

If this is not the case, you need to create a new movie script cast member for your registration code.

  1. In Director, type command-zero (Mac) or Ctrl-zero (Windows) to open a script window.
  2. If this window already contains a script, click on the "+" (plus) icon at the top left corner of the script window to create a blank script member.
  3. Check the type of the member by clicking on the "info" icon at the top of the window. The type should be "Movie".
  4. If the type is not "Movie", then change it.
  5. Paste your registration code into the script window:

    on startMovie
        register xtra "[xtra name]", "[serial number]"
    end

    The exact xtra name and registration number can be found in your registration email.

Registration problems can also happen if you inadvertently have more than one "on startMovie" handler. To check for duplicate startMovie handlers, simply perform a find in all casts for "startMovie". A handler that begins with "on startMovie" should only appear ONCE.

Another PrintOMatic-specific problem is having both PrintOMatic and PrintOMatic Lite Xtras installed at the same time. Since both Xtras support the "printStage" handler and other handlers, you might end up registering the lite version of the Xtra, while printing using an unregstered copy of the full version. The solution is to only install the Xtra you are registering: if you are using the Lite version of PrintOMatic, remove all copies of the full version from your Xtras folder, and vice versa.


Technical Note: Customizing (and Hiding) the Print Dialogs

Tech Note: Customizing (and Hiding) the Print Dialogs

Products: PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

There are three dialogs associated with the printing process in PrintOMatic. These dialogs are:
  • The Page Setup Dialog
  • The Job Setup Dialog
  • The Print Progress Dialog
The first two dialogs can be displayed to the user or not, at your discretion. The Print Progress dialog can be hidden from the user, positioned wherever you want it on the screen, or customized with a graphic of your choice.

Pre-Requisites

Before you can customize the printing dialogs, you must be using document objects instead of the simple "print" commands to do your printing.

You create a document object by "creating an instance" of the PrintOMatic Xtra, and then manipulating the document object before you finally print its contents. A basic printing framework that uses a document object to print (with the normal dialogs) looks like this:

    set doc = new (xtra "printomatic")
    if not objectp(doc) then exit
    append doc, member "blah"
    if doJobSetup(doc) = TRUE then print doc
    set doc = 0

Displaying the Page Setup Dialog

You must display the page setup dialog box before you add anything to your document. Once you start addding items to your document object, the page layout cannot be changed. Display the page setup dialog by adding a new line to the basic script:

    set doc = new (xtra "printomatic")
    if not objectp(doc) then exit
    if doPageSetup(doc) = FALSE then exit
    append doc, member "blah"
    if doJobSetup(doc) = TRUE then print doc
    set doc = 0

The "if" statement bracketing the doPageSetup command cancels the print job if the user clicks the "Cancel" button.

Hiding the Job Setup Dialog

It’s easy to hide the job setup dialog box from your users. Simply don’t call doJobSetup() before calling print:

    set doc = new (xtra "printomatic")
    if not objectp(doc) then exit
    append doc, member "blah"
    print doc
    set doc = 0

Hiding the Print Progress Dialog

To hide the print progress dialog, use the setProgressLoc() command to position it off the screen using negative coordinates:

    set doc = new (xtra "printomatic")
    if not objectp(doc) then exit
    append doc, member "blah"
    setProgressLoc doc, Point(-1000,-1000)
    if doJobSetup(doc) = TRUE then print doc
    set doc = 0

The setProgressLoc command is only available when you register your copy of the Xtra.

Customizing the Print Progress Dialog

You cam place your own custom bitmap into the Print Progress Dialog. Simply use the setProgressPict() command to specify a bitmap cast member you would like to use:

    set doc = new (xtra "printomatic")
    if not objectp(doc) then exit
    append doc, member "blah"
    setProgressPict doc, member "myprogresspict"
    if doJobSetup(doc) = TRUE then print doc
    set doc = 0

The setProgessPict command is only available when you register your copy of the Xtra.


Technical Note: Are Serial Numbers Cross-Platform?

Tech Note: Are Serial Numbers Cross-Platform?

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5, Table Xtra 1.0
Platforms: all

Yes. All our serial numbers are cross-platform. You only have to buy one serial number for Electronic Ink’s Xtras, such as PrintOMatic, PrintOMatic Lite, Table, and Yak. The same serial number works on both Macintosh and Windows versions of these products.


Technical Note: Including Xtras With Projectors

Tech Note: Including Xtras With Projectors

Products:


Technical Note: Shockwave and PrintOMatic

Tech Note: Shockwave and PrintOMatic

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5, Table Xtra 1.0
Platforms: all

Many Electronic Ink Xtras, including PrintOMatic, PrintOMatic Lite, and the Table Xtra, have been created "safe for Shockwave", and are available for use and auto-download in your Shockwave movies.

This only is a brief note about using Xtras in the Shockwave environment. For complete background on creating Shockwave movies, please read the appropriate Shockwave-specific chapters of your Using Director manual.

Summary

In order to use Xtras in Shockwave, you must prepare your Shockwave movie to auto-download an Xtra from the Internet when the end-user doesn't have the Xtra installed. Also, the end-user's Web browser must have the Shockwave plugin installed, and have access to www.printomatic.com, to auto-dowload the Xtras from the Internet if needed.

Modifying Xtrainfo.txt

The XTRAINFO.TXT file is located in the same folder as the Director application. Director uses this file to determine the "auto-downloading" information for any Xtras you want to use with Shockwave.

The version of XTRAINFO.TXT that ships with Director does not contain the correct information about all of Electronic Ink's Xtras. You must modify this file in order to use these Xtras with Shockwave:

  1. Make sure the Director application is not running.
  2. Open the XTRAINFO.TXT file using any text editor This file is located in the same folder as Director.
  3. Find the lines in the original file (if they exist) that look like this:

    ; PrintOMatic Lite from Electronic Ink
[#namePPC:"PrintOMatic Lite Xtra", #nameW32:"PMLITE.X32"]

  4. Replace those lines with the following text (or add these lines if none exist yet). Watch the line breaks in the text below!. When you copy-and-paste the text, there should 3 comment lines at the top, and ONE line of text for each xtra):

    ; Electronic Ink Xtras
    ; http://www.printomatic.com/
    ;
    [#namePPC:"PrintOMatic MX", #nameW32:"PrintOMatic MX.x32", #package:"http://www.printomatic.com/packages/PMaticMX", #info:"http://www.printomatic.com/products.cfm?page=1"]
    [#namePPC:"PrintOMatic Lite MX", #nameW32:"PrintOMatic Lite MX.x32", #package:"http://www.printomatic.com/packages/PMLiteMX", #info:"http://www.printomatic.com/products.cfm?page=2"]
    [#namePPC:"PrintOMatic Lite Xtra", #nameW32:"PMLITE.X32", #package:"http://www.printomatic.com/packages/PMLite"]
    [#namePPC:"PrintOMatic Xtra", #nameW32:"PMATIC.X32", #package:"http://www.printomatic.com/packages/PMatic"]
    [#namePPC:"Table Xtra", #nameW32:"Table.x32", #package:"http://www.printomatic.com/packages/Table", #info:"http://www.printomatic.com/products.cfm?page=3"]

After you have modified the XTRAINFO.TXT files, you can add "auto-download" information to your Shockwave movies.

Modifying Your Movies

Do the following for every movie that uses an Electronic Ink Xtra:

  1. Make sure you have an active Internet connection. You will NOT be able to add Xtras to your Shockwave movie without an active connection.
  2. Open the Director movie that uses the Xtra
  3. Open the Movie Xtras dialog box by selecting Modify -> Movie -> Xtras from Director's Menu bar.
  4. Find the Xtra you are using in the list of Xtras. In Windows, the file name for the PrintOMatic Xtra is PMATIC.X32, and for PrintOMatic Lite, it's PMLITE.X32. For the Table Xtra, it's TABLE.X32 On the Macintosh, the Xtras are denoted by their full names: "PrintOMatic Xtra", "PrintOMatic Lite Xtra", and "Table Xtra".
  5. If you don't see the Xtra in this list, click the "Add" button, and locate the proper Xtra file(s) in the complete list of Xtras.
  6. Select the Xtra in the list, and turn on the options "Include in Projector" and "Download if Needed". When you turn on "Download if Needed", Director will connect to www.printomatic.com to check for the downloadable Xtra "packages".
When you save your movie as a Shockwave .DCR file, it will be able to automatically download the Xtra when it is needed.

Installing Shockwave in a Web Browser

Internet Explorer will install the Shockwave plugin automatically when it encounter a Shockwave movie on a web page.

When Internet Explorer encounters a Shockwave movie, it will connect to Macromedia's web site to begin the download process, and launch the Shockwave Installation Wizard. Depending upon the speed of the Internet connection, this installation process can take from 1 to 20 minutes.

When a Netscape browser encounters a Shockwave movie, you will be directed to a download page at Macromedia. Click the "download" button in the first panel on this page to download the installer program. When downloading is complete, you must quit your web browser and run the installer. Then, the installer will automatically launch your browser again to complete installation.

After the installation process is complete, the web Browser can load and play the Shockwave movie.

Auto-Download

If a Shockwave movie has been properly configured, the Shockwave plugin will download any needed Xtras after loading the movie. All of Electronic Ink's Xtra packages are located at http://www.printomatic.com/packages/ In many browsers, the Status Bar will display the message "Downloading Xtras". The end-user will be presented with a confirmation dialog describing the Xtra, and the user must confirm the installation. After the user confirms the installation, the Xtra will be placed in Shockwave's Xtras folder.

What if users decline to download the Xtra?

Users can choose NOT to download Xtras when running Shockwave movies. Your code should defend against this situation. If you are using the PrintOMatic Xtra, design your interface and coding approach to accomodate both printing and not printing. If you are using the Table Xtra, you'll probably want to QUIT your presentation if the user didn't download the Xtra.

The first thing you need to do is add an isXtraInstalled script to one of your GLOBAL script cast members:

  on isXtraInstalled xtraName
    if not stringP(xtraName) then
      alert "isXtraInstalled() requires an Xtra name to work."
      return false
    end if
    repeat with i = 1 to the number of xtras
      if the name of xtra i = xtraName then return true
    end repeat
    return false
  end

Then, whenever you want to use printing functions, use the code below:

    if isXtraInstalled("PrintOMatic") then
        -- place your PrintOMatic code here
    else
        -- place your non-PrintOMatic code (alert dialog, etc) here
    end if

Two suggested uses of the above include when the PrintOMatic Xtra is registered and/or instantiated, and prior to any printing function being executed. The best approach for the latter example might be to change your interface. For example, if your printing function is triggered from a button, you might include the following in a sprite behavior:

    on beginSprite me
        if not isXtraInstalled("PrintOMatic") then
            sprite(me.spriteNum).locH = -500
        end if
    end beginSprite

This will prevent the user from clicking on the button. Similarly, the following might be a way to handle registering or instantiating the xtra:

    on startMovie
        if isXtraInstalled("PrintOMatic") then
            register xtra("PrintOMatic",  "xxxx-xxxx-xxxx")
        end if
    end

Try It Out

You can view properly configured Shockwave versions of the PrintOMatic and PrintOMatic Lite demo movies on our web site:

  • PrintOMatic: http://www.printomatic.com/shockwave/pmatic.html
  • PrintOMatic Lite: http://www.printomatic.com/shockwave/pmlite.html


Technical Note: Image Wraparound in Printouts

Tech Note: Image Wraparound in Printouts

Products: PrintOMatic Lite Xtra 1.6.5, PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

Symptoms

True color (16 or 24 bit) images printed using PrintOMatic or PrintOMatic Lite for Windows appear to "wrap": a few pixels from the left side of the image appear on the right instead, usually accompanied by a black vertical line.

The Solution

This was a bug in very old versions of PrintOMatic, prior to version 1.5.5. Upgrading to the latest version of the Xtra will fix the problem.

If you believe you are experiencing this problem in version 1.6.x, check your Xtras directory very carefully. It is likely you have an old version of the PrintOMatic or PrintOMatic Lite Xtra lurking somewhere, which is causing this problem.

To confirm the version of PrintOMatic you are using, use Director’s Xtras menu: Xtras->PrintOMatic Xtra->About the PrintOMatic Xtra. The version number is in the lower right corner of the About dialog. If the version number is missing, you definitely are using an out of date version.


Technical Note: Using PrintOMatic in Windows 3.1

Tech Note: Using PrintOMatic in Windows 3.1

Products: PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: Windows 3.1

Windows 3.1, also known as "16 bit Windows" or "Win16", is nearly obsolete, though computers running this version of Windows are still around. (Especially in educational and non-profit settings.)

With an 8th-generation multimedia authoring tool, it’s a bit much to still expect it to support Windows 3.1, and in fact, with the release of Director 7, Macromedia quit supporting 16 bit Windows altogether, because it’s just too difficult to move ahead and still maintain backwards compatibility with such an old system.

As Director, Authorware and Shockwave have evolved, 16 bit versions of Xtras for these programs have l become harder and harder to build and maintain, and excruciating to debug.

In recent releases of PrintOMatic, Electronic Ink has also dropped support for Windows 3.1. The 16-bit Windows version of PrintOMatic is not available in releases after 1.5.6.

However, the 16 bit version of PrintOMatic 1.6 can still be downloaded and used. This version is unserialized: it does not require any serial number to work. It will safely ignore any serial number you try to register it with.

The 16 bit version of PrintOMatic has all the same commands as the current release, with the exception of the "printStage" command.

Download 16-bit PrintOMatic 1.5.6 for Windows


Technical Note: Using PrintOMatic With Authorware

Tech Note: Using PrintOMatic With Authorware

Products: PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

The current release of the PrintOMatic Xtra works great within the newer versions of Authorware that have Xtras support.

There are a few limitations in working with Authorware, primarily with the data types you can print. While Director gives Xtras a lot of access to the "media" inside its cast members, Authorware has much more limited support. For example, you can’t print graphics that are in Authorware, except by printing their portion of the Presentation Window, and you can only print unformatted text strings.

However, this is where PrintOMatic’s support for printing graphics from disk, and formatting text fonts, sizes, and styles on the fly becomes useful.

We do not recommend using PrintOMatic Lite with Authorware, unless the only command you are interested in using is "printStage", or you only need to print simple text strings in PrintOMatic Lite’s default font (Arial/Geneva).

Please download our PrintOMatic demonstration file for Authorware for complete examples of the proper syntax to use with the Xtra in Authorware.

Download the Authorware 6.x demo (.a6p file)


Technical Note: Text/RTF Members Print Too Small

Tech Note: Text/RTF Members Print Too Small

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

PrintOMatic prints RTF ("text") members as bitmapped images, not as styled text. This has to do with the pre-D7 legacy of RTF members, when Director would strip out all the text from these members in Projectors.

The way that PrintOMatic handles bitmaps is to shrink them to fit on the page. As a result, long RTF members will print out at impossibly small sizes on the page.

Click here for detailed information about text members and PrintOMatic.

Solutions

The best quality printing with PrintOMatic always comes from using text FIELD members. Consider placing your printable text into these members for best results.

Your other option is to split your RTF into multiple one-page members and print them sequentially, e.g.:

    print member 1, member 2, member 3


Technical Note: Handler Not Defined Errors

Tech Note: Handler Not Defined Errors

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5, Table Xtra 1.0
Platforms: all

Symptom: When trying to register an Xtra, Director replies with an "handler not defined" error. In a projector, this may appear as a generic "Script Error".

Is the Xtra Installed?

Have you properly placed the Xtra file in Director’s Xtras folder? At authoring time, all the Xtras you use need to be located in the Xtras folder, which is in the same folder as the application.

Have you created an XTRAS folder for your PROJECTOR?

Each projector you create needs ITS OWN XTRAS FOLDER. Projectors do not "share" Xtras with the Director application. Whenever you create a projector, you need to create an Xtras folder in the same folder as the projector, and place copies of all your third-party Xtras in this folder.

Or did you include the Xtra in your projector file?

An alternative to creating an Xtras folder for your projector is to select the Xtra file(s) you are using in the file list when you build your projector. Simply locate the Xtra files you are using, and add them right along with your .DIR and .CST files when you build your projector.

Are you using the correct Xtra file for your platform?

Macintosh and Windows Xtra files CANNOT be inter-changed across platforms. Each platform requires a completely different Xtra file.

Windows Xtra files end with a ".X32" extension. These files will NOT work on a Macintosh.

Macintosh Xtra files generally don’t have extensions. They have an "X" shaped icon, and if you do a "Get Info" in the Finder on these files, they will be described as Director documents. These Xtra files CANNOT be used on Windows platforms.

Is the right PrintOMatic Xtra installed?

The PrintOMatic Xtra comes in Lite and Full versions. These versions are NOT interchangeable. If you have a serial number for the Lite version, make sure you have the Lite version installed. The file name will include the word "Lite" in it.

If you have a serial number for the full version, make sure you have the full version installed.


Technical Note: Text Fields Print with Incorrect Fonts

Tech Note: Text Fields Print with Incorrect Fonts

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

Symptoms

On the Windows platform, text field cast members are not printing in the fonts you specified in the cast members.

Possible Causes

1. You are using "embedded fonts" which are not installed in the user’s system. In certain situations, embedded fonts are not accessible to the OS and cannot be used for printing unless the font is also installed to the user’s operating system.

Click here to view our tech note on embedded fonts.

2. You are using Director 7 or 8, and your cast member is not in the first internal cast. A bug in these versions of Director garbles font information for any text field that is not in the first internal cast. Moving your text field members to the first internal cast will fix the problem.


Technical Note: Can't Print an Empty Document Errors

Tech Note: Can't Print an Empty Document Errors

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: Mac OS 9

The Problem: When trying to print a sprite using the syntax:

print sprite X

PrintOMatic responds with an error: "Can't print an empty document."

The Solution: There is a Lingo bug in the Macintosh version of Director 7 and later that prevents this syntax from working. Instead, use the syntax:

print the member of sprite X


Technical Note: Linked Cast Members Don't Print

Tech Note: Linked Cast Members Don't Print

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

The Problem

Cast members that are linked to a file on disk (especially a large or high-resolution file) don’t print.

The Solution:

You might have to force Director to preload the cast member using the "preloadCast" command, before you print the member.

Also, the default memory size for projectors on the Macintosh is quite small. You might have to increase the projector’s memory usage in order to have enough memory for the projector to properly load the cast member for printing.


Technical Note: Why Does Preparing to Print Take So Long?

Tech Note: Why Does Preparing to Print Take So Long?

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

Why does it take so long to prepare a a print job with PrintOMatic? It seems to take "forever" for the print job setup dialog to appear.

The reason is that PrintOMatic’s print process works differently from most applications that print. Most printing applications (such as Microsoft Word) don’t do much pre-processing before starting a print job. They immediatley display a "job setup" dialog, and then compile print data as it gets sent to the printer. With these applications, the "preparation time" is hidden in the time it takes to perform the printing process itself.

Because of the Xtras architecture, however, PrintOMatic must completely compile the entire print job before sending it to the printer. This means pre-processing can take a long time, but the process of actually sending data to the print driver is much faster than other apps. (Sometimes, the sending process is so fast, you don’t even get a chance to see the print progress dialog.)

So on balance, the entire print job start-to-finish takes about the same time with PrintOMatic as it does with other apps. It’s just that the time is distributed differently between preparation and sending, because of the Xtras architecture and the way Director works.

Ways to Speed Up Printing

While there is no easy fix to the print time problem, here are a few factors that will affect your printing speed:

  • More RAM: machines with more RAM, that use less virtual memory, will print faster.
  • Faster Processor: obviously, the faster your computer is, the faster it will print
  • Fewer Colors: if you are printing bitmaps, especially large ones, try reducing the number of colors in these images to 8-bits or less.
  • Break up your print job: if you have a very long document, especially one with a lot of images, consider splitting up the job into multiple smaller print jobs, calling reset() between each job. This will reduce memory usage as well.


Technical Note: Printing the Cast Members on the Stage

Tech Note: Printing the Cast Members on the Stage

Products: PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

Here's a different approach to printing the Stage: using Lingo to check the cast member in each sprite channel, and adding each cast member individually to a "document object".

Using this method to print the Stage can accomplish a few desirable things:

  • Speed print time, since each image will be sent at its native (cast member) bit depth, instead of the Stage bit depth
  • Improve the print quality of text fields
  • Give you control over how different types of members print

The script below will print bitmaps, rectangles, and text members on the Stage. It's meant to be a starting point for your own custom Stage-printing code.

on printStageMembers
  set doc = new(xtra "PrintOMatic")
  if not objectP(doc) then exit

  -- most Stages are landscape oriented
  setLandscapeMode doc, TRUE

  -- create a page
  newPage doc

  -- fill the background with the stage color
  set c = color(#paletteindex,the stageColor)
  setColor doc, c.red, c.green, c.blue
  drawRect doc, Rect(0,0, the width of the rect of the Stage, the Height of the rect of the Stage), TRUE

  -- loop through all the sprite channels
  repeat with cnt = 1 to 150
    if the type of (sprite cnt) > 0 then
      set ty = the type of the member of sprite cnt
      if ty = #bitmap then
        drawPicture doc, the member of sprite cnt, the rect of sprite cnt
      else if ty = #field then
        if the ink of sprite cnt = 0 then
          set c = color(#paletteindex,the backcolor of the member of sprite cnt)
          setColor doc, c.red, c.green, c.blue
          drawRect doc, the rect of sprite cnt, TRUE
        end if
        set c = color(#paletteindex,the forecolor of the member of sprite cnt)
        setColor doc, c.red, c.green, c.blue
        newFrame doc, the rect of sprite cnt, FALSE
        setTextJust doc, the textAlign of the member of sprite cnt
        append doc, the member of sprite cnt
      else if ty = #shape then
        -- simply assume it's a rectangle, because we can't detect
        -- the type of shape with Lingo. Grrrr.
        set c = color(#paletteindex,the forecolor of sprite cnt)
        setColor doc, c.red, c.green, c.blue
        setLineWeight doc, the lineSize of sprite cnt
        drawRect doc, the rect of sprite cnt, the filled of the member of sprite cnt
      else if ty = #text then
        newFrame doc, the rect of sprite cnt, FALSE
        append doc, the member of sprite cnt
      end if
    end if
  end repeat

  if doJobSetup(doc) then print doc

  set doc = 0

end


Technical Note: Script Error / Xtra Not Found Error

Tech Note: Script Error / Xtra Not Found Error

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

Symptom: When trying to use/register the Xtra, Director displays an "Xtra Not Found Error". This may also appear as a generic "Script Error".

Is the Xtra Installed?

Have you properly placed the Xtra file in Director’s Xtras folder? At AUTHORING time, all the Xtras you use need to be located in the Xtras folder, which is in the same folder as the Director. In PROJECTORS, the location is different: read on.

Have you created an XTRAS folder for your PROJECTOR?

Each projector you create needs ITS OWN XTRAS FOLDER. Projectors do not "share" Xtras with the Director application. Whenever you create a projector, you need to create an Xtras folder in the same folder as the projector, and place copies of all your third-party Xtras in this folder.

Or, did you include the Xtra in your projector file?

An alternative to creating an Xtras folder for your projector is to select the Xtra file(s) you are using in the file list when you build your projector. Simply locate the Xtra files you are using, and add them right along with your .DIR and .CST files when you build your projector.

Are you using the correct Xtra file for your platform?

Macintosh and Windows Xtra files CANNOT be inter-changed across platforms. Each platform requires a completely different Xtra file.

Windows Xtra files end with a ".X32" extension. These files will NOT work on a Macintosh.

Macintosh Xtra files generally don’t have extensions. They have an "X" shaped icon, and if you do a "Get Info" in the Finder on these files, they will be described as Director documents. These Xtra files CANNOT be used on Windows platforms.

Is the right PrintOMatic Xtra installed?

The PrintOMatic Xtra comes in Lite and Full versions. These versions are NOT interchangeable. If you have a serial number for the Lite version, make sure you have the Lite version installed. The file name is "PMLITE.X32" on Windows, and "PrintOMatic Lite Xtra" on the Macintosh.

If you have a serial number for the full version, make suree you have the full version installed. The file name is "PMATIC.X32" on Windows, and "PrintOMatic Xtra" on the Macintosh.


Technical Note: -108 Error - Macintosh Offscreen Drawing Buffer

Tech Note: -108 Error - Macintosh Offscreen Drawing Buffer

Products: PrintOMatic Lite Xtra 1.6.5, PrintOMatic Xtra 1.6.5
Platforms: Mac OS 9

Symptom: When doing a printPreview on Macintosh, the Xtra responds with the error "Internal Error: The Xtra could not create its offscreen drawing buffer."

Soution: This is a low-memory error. The Xtra needs enough extra memory in Director (or your Projector) to create an offscreen drawing buffer for print preview. The larger your screen and the higher the screen bit depth, the larger this buffer needs to be.

There is no definite way to know how much memory is required for this buffer, so you will need to use trial-and-error to debug.

This problem most commonly happens in freshly-minted projectors. Director’s default memory size for projectors is almost always too small. Do a "Get Info" in the Finder, and increase the projector’s default memory size.


Technical Note: Embedded Fonts and PrintOMatic

Tech Note: Embedded Fonts and PrintOMatic

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

Director’s "embedded fonts" can be tricky to work with in Windows. Depending upon your Windows security settings and user login, they may not be available for use in printing.

When you launch a Director projector in Windows, or run your movie in Shockwave, the projector attempts to install all embedded fonts temporarily into the Windows system folder.

If the current user doesn’t have permission to access the System Folder, this action will fail, and the fonts will not be available for printing. This would most commonly occur in more secure Windows systems, such as NT and 2000.

Macromedia’s solution to this problem is as follows: "The user will need to log in as a Power User or Administrator to view the embedded fonts in a Director movie. Alternatively, the developer can choose to build the Director movie without the use of embedded fonts."

Click here to view Macromedia’s Tech Notes about embedded fonts.


Technical Note: Printing Bitmap Files in .GIF or .JPG Format

Tech Note: Printing Bitmap Files in .GIF or .JPG Format

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

PrintOMatic offers limited support for printing bitmap file formats from disk. The reason for this limitation is simple: Director offers a rich wealth of import filters that PrintOMatic can already utilize.

The basic strategy is to create a "dummy" bitmap cast member, whose contents are imported as "linked to file" (when you import the cast member graphic). It doesn’t really matter what file you link to initially.

Then, when you want to print an image from disk, you load the image into your dummy cast-member using Lingo:

set the fileName of member X = "myimage.jpg"

Once the member is loaded utilizing Director’s import plugins, then you can append the member to your PrintOMatic document, or simply print it directly:

print member X


Technical Note: Macintosh OS X Support

Tech Note: Macintosh OS X Support

Products: PrintOMatic Lite Xtra 1.6.5, PrintOMatic Xtra 1.6.5, Table Xtra 1.0
Platforms: Mac OS X

Electronic Ink has always been a Macintosh loving company, and is committed to fully supporting Macintosh operating systems. This includes Macintosh OS X, which we think is really cool, and a great step forward for Apple.

However, the effort of re-engineering our Xtras for MacOS X will be substantial, especially for our printing tools.

All of our registered users will be notified by email when OS X compatible versions of their Xtras are released.

PRINTOMATIC MX BETA TESTING

PrintOMatic MX for MacOS X (and Mac Classic and Windows) is now in beta testing. To add your name to the tester mailing list, and receive information about downloading the beta, send an email to listserver@printomatic.com with the following text in the body of the message:

     SUBSCRIBE printomatic-mx-l

TABLE MX BETA TESTING

Table MX will start beta testing in late August. To add your name to the tester mailing list, and receive information about downloading the beta, send an email to listserver@printomatic.com with the following text in the body of the message:

     SUBSCRIBE table-mx-l


Technical Note: High Resolution Printing

Tech Note: High Resolution Printing

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

How can I print at high resolution (300 DPI or more) using PrintOMatic or PrintOMatic Lite?

Printing High Resolution Text

Text strings and text field cast members printed using the append() or drawText() commands will always print at the current resolution of the printer in both Lite and Full versions of the Xtra. However, Rich Text members only print as 72DPI bitmaps. If you want high resolution text output, you need to use text strings or text field cast members. For more information, read our tech note on Text Members and PrintOMatic.

Printing High Resolution Graphics

Printing graphics (specifically, bitmap cast members) at high resolution is trickier than printing high resolution text. PrintOMatic Lite gives you very little control over the destination size of a printed bitmap, so we recommend using the FULL version of the Xtra for printing high resolution bitmaps.

The following information about printing graphics at high resolution applies to the FULL version of PrintOMatic only. We don’t recommend using PrintOMatic Lite to print high resolution graphics.

There are two parts to the high resolution printing problem: the first is getting around the Director cast’s limitation of 72DPI by importing large images. The second is scaling those large cast members down on the printed page to increase their printed resolution.

The first problem is that Director knocks the resolution of imported images that contain DPI information down to a standard 72DPI when you import them into the cast. The way around this is to save your images at 72DPI, but make them very large.

For example, if you want a 1-inch by 1-inch graphic at 300DPI, then you should save it at (roughly) 4 inches by 4 inches at 72 DPI instead. When you import it into the Director cast, you should end up with a bitmapped cast member that is 288 x 288 pixels.

You need to use the drawPicture command to print bitmap cast members members at high resolution. With drawPicture, you can specify a small destination rectangle, which will "shrink" your image. When the image is "shrunk" on the page, it still keeps all of its original pixels. So the result of "shrinking" an image on the output page is to increase its resolution.

Continuing with the example above, if you have a cast member that is 288 x 288 pixels you’ll need to print it at 1 inch by 1 inch (72 x 72 points) to get output of (roughly) 300 DPI (actually 288 DPI). You control the output size by modifying the destRect parameter of the drawPicture command.

drawPicture doc, member "myBigImage", Rect(0,0,72,72)

Because the destination rect is 72x72 points (1 inch by 1 inch), but your image is 288x288 pixels, you’ll end up with a 288 DPI image in the upper left corner of the page.


Technical Note: How to Print the Stage

Tech Note: How to Print the Stage

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

The easiest way to print the Stage in either the Lite or the Full versions of PrintOMatic is simply to use the one-line printStage command.

However, for some people, printStage won’t do all you want. For example, you may want to print a portion of the stage instead of the whole thing, or you may want to customize the print job by hiding dialog boxes, etc.

Customizing Stage Printing

Below is a script that works ONLY with the Full version of PrintOMatic. This script duplicates in Lingo exactly what the printStage command does. It is a starting point for any customization you might want to do. Be careful of the 4 lines where drawStagePicture is called: you need to return these 4 lines to a single line of Lingo or you'll get a script error.

on myPrintStage

  set doc = new(xtra "PrintOMatic")
  if not objectP(doc) then
    -- no printer
    alert "There is no currently selected printer."
    exit
  end if

  -- setup print job
  setDocumentName doc, "My Stage Printout" -- or whatever
  setMargins doc, Rect(72,72,72,72) -- 1 inch margins

  set stageWidth = the width of the rect of the stage
  set stageHeight = the height of the rect of the stage

  -- set paper orientation
  if stageWidth > stageHeight then setLandscapeMode doc, TRUE

  set pageWidth = getPageWidth(doc)
  set pageHeight = getPageHeight(doc)

  -- figure out scaling of page
  set scaling = min(1.0,float(pageWidth)/float(stageWidth))
  set scaling = min(scaling,float(pageHeight)/float(stageHeight))

  set destWidth = integer(scaling*stageWidth)
  set destHeight = integer(scaling*stageHeight)

  -- figure top left starting point for a centered image
  set destLeft = (pageWidth-destWidth)/2
  set destTop = (pageHeight-destHeight)/2

  -- make a new page
  newPage doc

  -- grab the stage, put it on the page
  -- remove line breaks so the next line is ONE LINE!
  drawStagePicture doc,
     Rect(destLeft,destTop,destLeft+destWidth,destTop+destHeight),
     Rect(0,0,stageWidth, stageHeight),
     FALSE

  -- un-comment the next line to hide the progress dialog
  -- setProgressLoc doc, Point(-1000,-1000)
  -- this command only works in the registered Xtra

  -- comment out the next line and the "end if" line to hide job setup
  if doJobSetup(doc) then
    print doc -- you can substitute print preview here, too!
  end if

  set doc = 0

end

A printFrom Replacement

The code below is a PrintOMatic-based replacement to Director's built-in printFrom command. Since printFrom doesn't work in Shockwave, this is the way to get the same functionality. It's also a good starting point for any customization you might want to do.

Note that this code only works in the FULL version of PrintOMatic, and not the Lite version.

This function is called myPrintFrom and accepts the same parameters (first frame, last frame, reduction) that printFrom does, as well as allowing you to set the document name as the last parameter.

Watch the line breaks when you copy and paste this code. The line that begins with drawStagePicture will need to have extra line-breaks removed for the code to compile.

on myPrintFrom firstFrame, lastFrame, reduction, documentName

  set doc = new(xtra "PrintOMatic")
  if not objectP(doc) then
    -- no printer
    alert "There is no currently selected printer."
    exit
  end if

  -- setup print job
  if stringP(documentName) then setDocumentName doc, documentName
  setMargins doc, Rect(72,72,72,72) -- 1 inch margins

  set stageWidth = the width of the rect of the stage
  set stageHeight = the height of the rect of the stage

  -- set paper orientation
  if stageWidth > stageHeight then setLandscapeMode doc, TRUE

  set pageWidth = getPageWidth(doc)
  set pageHeight = getPageHeight(doc)

  -- figure out scaling of page
  if integerP(reduction) then
    set scaling = float(reduction)/float(100)
  else
    -- auto scaling
    set scaling = min(1.0,float(pageWidth)/float(stageWidth))
    set scaling = min(scaling,float(pageHeight)/float(stageHeight))
  end if

  set destWidth = integer(scaling*stageWidth)
  set destHeight = integer(scaling*stageHeight)

  -- figure top left starting point for a centered image
  set destLeft = (pageWidth-destWidth)/2
  set destTop = (pageHeight-destHeight)/2

  -- set valid last frame
  if not integerP(lastFrame) then set lastFrame = firstFrame

  set originalFrame = the frame
  repeat with theFrame = firstFrame to lastFrame
    go to frame theFrame
    -- make a new page
    newPage doc

    -- grab the stage, put it on the page
    -- remove line breaks so the next line is ONE LINE
    drawStagePicture doc,
        Rect(destLeft,destTop,destLeft+destWidth,destTop+destHeight),
        Rect(0,0,stageWidth, stageHeight), FALSE

  end repeat
  go to frame originalFrame

  -- un-comment the next line to hide the progress dialog
  -- setProgressLoc doc, Point(-1000,-1000)
  -- (the above command only works in the registered Xtra)

  if the controlDown then
    -- hold down the control key for a print preview
    printPreview doc
  else
    -- comment out the next line and the "end if" line to hide job setup
    if doJobSetup(doc) then
      print doc -- you can substitute print preview here, too!
    end if
  end if

  set doc = 0

end


Technical Note: Printing EPS Files

Tech Note: Printing EPS Files

Products: PrintOMatic Xtra 1.6.5
Platforms: all

The full version of the PrintOMatic Xtra is capable of printing EPS files. To do this, you need to use the drawPicture command:

drawPicture doc, the pathName&"myimage.eps", Rect(0,0,100,100)

However...

It’s usually not as easy as this. First off, are you even printing to a PostScript compatible printer? If not, you’ll either get a preview image (on Macintosh, and only if you generated one), or a box with an "X" through it (more common).

If you are printing to a PostScript printer on MacOS, Windows 95 or 98, you’ll probably get good results right away. But what if you’re not?

EPSPlug

If you’re printing to a non-PostScript printer on Windows, or if you’re running Windows NT, 2000, XP or Me, the PrintOMatic Xtra is not capable of sending EPS data directly to your printer. The reason that this is impossible -- even if your printer supports PostScript -- is that the Windows Print APIs changed, and on these OSes, you can no longer "escape" EPS code in the middle of a normal (GDI) print job.

Thanks to Glenn Picher of Dirigo Multimedia, we have a plug-in for PrintOMatic that uses the open-source GhostScript engine to render EPS files as printable bitmap images on just about any Windows printer. It’s called EPSPlug, and it consists of two add-ons: EPSPlug.dll and epsp-dll.dll. Just download these DLLs, drop them into the same folder as PrintOMatic 1.6.5, and wham! Instant EPS rendering.

Click here to download the EPSPlug DLLs

But Watch Out

The EPSPlug DLLs do great things. However, if your graphics are big, you’ll need a lot of memory (or virtual memory) to do the rendering work. Keep this in mind when you make commitments to the platform your finished product will run on. Only your testing will tell for sure how much RAM. Also, your print drivers may not like the big color bitmaps. As always, testing, testing, testing is the key to success!


Technical Note: Fixing Blank Output in Windows

Tech Note: Fixing Blank Output in Windows

Products: PrintOMatic Xtra 1.6.5
Platforms: Windows (all versions)

The Problem

You are getting blank or garbled output when printing large-size true color images on black and white Windows printers. This often happens when printing the Stage. You can read details about this problem in our tech note Blank Output in Windows.

DrawStagePieces

The drawStagePieces script attempts to make Stage printing work on balky printers by chopping up the Stage image into a number of smaller, more digestible pieces for printing. It is designed to be a direct replacement for drawStagePicture.

The default piece size is 128 x 128 pixels. Edit the code if you want to try other sizes.

You should be able to directly replace your calls to drawStagePicture with calls to drawStagePieces.

PrintStageAsPieces

This script is a replacement for printStage. It utilizes the drawStagePieces script to print the Stage in one simple command, so be sure to put both scripts into your project.

You should be able to directly replace your calls to printStage with calls to printStageAsPieces.

Installation Instructions

Download these scripts from:

ftp://ftp.printomatic.com/drawStagePieces.txt

If your web browser doesn't just open the text directly, you may need to open the text file in a text editor. In either case, copy all the text, then paste the text into a Movie Script Cast Member in Director.


Technical Note: Finding a Lost Serial Number

Tech Note: Finding a Lost Serial Number

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5, Table Xtra 1.0
Platforms: all

Lost your serial number for an Electronic Ink Xtra? Here's how to find it again:

  1. Open up an old Director project that used a registered version of the Xtra.
  2. Open the Script window (ctrl-0).
  3. Do a "find" (ctrl-f) across "All Casts", looking for the word "register". You will hopefully find a line of Lingo that looks like this:

    register Xtra "(xtra name)", "(serial number)"

This will tell you which Xtra you have registered, and what your serial number is. The Xtra name will be one of the following:

  • PrintOMatic
  • PrintOMatic_Lite
  • Table

If all else fails, send us an email. Be sure to include as much information as possible: company name(s) the software might be registered under, the name of the person who registered, your city, state, zip, an original order number, etc.


Technical Note: Printing PDF Files

Tech Note: Printing PDF Files

Products: PrintOMatic Lite MX, PrintOMatic Lite Xtra 1.6.5, PrintOMatic MX, PrintOMatic Xtra 1.6.5
Platforms: all

Can PrintOMatic or PrintOMatic Lite print PDF Files?

PrintOMatic and PrintOMatic Lite don’t support printing PDF documents from disk. For this functionality, try the PDFXtra from Integration New Media at www.intregrationnewmedia.com.

What about generating PDFs from PrintOMatic output?

In Macintosh OS X, printing straight to PDF is built into the operating system. In the Job Setup dialog, all you need to do is click "Save as PDF..." instead of "Print".

In other versions of the Mac OS and all versions of Windows, you must have the commercial version of Adobe Acrobat installed. Then, you can select the "PDFWriter" printer driver just like you’d select any other printer. All PrintOMatic output will then be sent to a PDF file.